#include "comm.hpp"
#include "log.hpp"

int main()
{
    //创建通信文件
    Init init;
    // int n = mkfifo(FIFO_FILE, MODE);
    // if (n == -1)
    // {
    //     perror("mkfifo");
    //     exit(FIFO_CREATE_ERR);
    // }
    Log lg;
    lg.change_method(Class);
    
    //打开通信文件
    int fd = open(FIFO_FILE, O_RDONLY);
    if (fd < 0)
    {
        lg(Fatal, "error string: %s, error code: %d", strerror(errno), errno);
        exit(FIFO_OPEN_ERROR);
    }
    std::cout << "server open fifo done" << std::endl;

    lg(Info, "server open file done, error string: %s, error code: %d", strerror(errno), errno);
    lg(Warning, "server open file done, error string: %s, error code: %d", strerror(errno), errno);
    lg(Fatal, "server open file done, error string: %s, error code: %d", strerror(errno), errno);
    lg(Debug, "server open file done, error string: %s, error code: %d", strerror(errno), errno);

    //开始通信
    while (true)
    {
        char buffer[1024] = { 0 };
        int n = read(fd, buffer, sizeof(buffer) - 1);
        if (n > 0)
        {
            buffer[n] = '\0';
            std::cout << "client sent# " << buffer << std::endl;
        }
        else if (n == 0)
        {
            lg(Debug, "client quit, error string: %s, error code: %d", strerror(errno), errno);
            break;
        }
    }

    //关闭通信文件
    close(fd);
    lg(Info, "server exit, err string: %s, error code: %d", strerror(errno), errno);
    // int m = unlink(FIFO_FILE);
    // if (m == -1)
    // {
    //     perror("unlink");
    //     exit(FIFO_DELETE_ERR);
    // }

    return 0;
}